package com.solution.admin.product.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.solution.admin.product.dao.ProductCategoryDao;
import com.solution.admin.product.entity.ProductCategoryEntity;
import com.solution.admin.product.entity.ProductCategorySortEntity;
import com.solution.common.dao.impl.BaseDaoImpl;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 商品类别信息DAO实现
 * @author xu_cc
 * @date 2017-08-31 23:52:27
 */
@Repository
public class ProductCategoryDaoImpl extends BaseDaoImpl<ProductCategoryEntity> implements ProductCategoryDao {
    
    /**
     * 类型累加或者减
     * 
     * @param categoryId
     * @param type
     * @return
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年9月26日 上午11:04:07
     */
    public int updateCount(Long categoryId, String type) {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("id", categoryId);
        param.put("type", type);
        return getSessionTemplate().update(getStatement("updateCount"), param);
    }

	/**
	 * 保存商品类别信息信息
	 * @param ebProductCategoryEntity
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	@Override
	public long saveProductCategory(ProductCategoryEntity ebProductCategoryEntity) {
		return super.insert(ebProductCategoryEntity);
	}

	/**
	 * 分页查询商品类别信息信息
	 * @param pageParam 分页对象
	 * @param ebProductCategory 分页参数
	 * @return PageBean 分页参数及数据
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public PageBean listProductCategoryPage(PageParam pageParam, Map<String, Object> param) {
		return super.listPage(pageParam, param);
	}

	/**
	 * 更新商品类别信息
	 * @param ebProductCategoryEntity
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	@Override
	public int updateProductCategory(ProductCategoryEntity ebProductCategoryEntity) {
		return super.update(ebProductCategoryEntity);
	}

	/**
	 * 删除商品类别信息
	 * @param ebProductCategoryId
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	public int deleteProductCategoryById( Long id) {
		return super.deleteById(id);
	}
	
	/**
	 * 根据条件查询商品类别信息
	 * @param param
	 * @return
	 * @author xu_cc
	 * @date 2017-08-31 23:52:27
	 */
	@Override
	public List<ProductCategoryEntity> listProductCategory( Map<String, Object> param) {
        return super.listBy(param);
    }
	
	/**
	 * 根据关键字查询相关的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	@Override
	public List<ProductCategoryEntity> listProductCategoryBySearchKey(Map<String, Object> param){
		return getSessionTemplate().selectList(getStatement("listProductCategoryBySearchKey"), param);
	}
	
	/**
	 * 查询PC端首页的商品类型
	 * @param param
	 * @return
	 * @author llp
	 */
	@Override
	public List<ProductCategoryEntity> listProductCategoryForIndex(Map<String, Object> param){
		return getSessionTemplate().selectList(getStatement("listProductCategoryForIndex"), param);
	}

	/**
	 * 插入商品分类三级排序
	 * @param sortList
	 * @author xu_cc  
	 * @throws Exception exception
	 * @Date 创建时间：2018年4月27日 下午6:38:06
	 */
	@Override
    public int insertSortList(List<ProductCategorySortEntity> sortList) {
		return getSessionTemplate().insert(getStatement("insertSortList"), sortList);
    }

	/**
	 * 根据分类ID集合获取所有的分类
	 * @param categoryIds
	 * @return
	 * @author xkl
	 * @date 2018年6月12日 下午6:45:40
	 */
	@Override
	public Map<String, ProductCategoryEntity> listProductCategoryByIds(List<Long> categoryIds) {
		return getSessionTemplate().selectMap(getStatement("listProductCategoryByIds"), categoryIds, "id");
	}
	
	/**
	 * 查询商品分类列表
	 * @param param
	 * @return
	 */
	public List<ProductCategoryEntity> listProductCategoryForSelector(Map<String, Object> param){
		return getSessionTemplate().selectList(getStatement("listProductCategoryForSelector"), param);
	}
}
